Skip to content

fix(milestones): a milestone can pay out more than its first issue - #675

Open
yggdrasilworld wants to merge 1 commit into
MergeFi:mainfrom
yggdrasilworld:fix/milestone-multi-issue-578
Open

yggdrasilworld wants to merge 1 commit into
MergeFi:mainfrom
yggdrasilworld:fix/milestone-multi-issue-578

Conversation

@yggdrasilworld

@yggdrasilworld yggdrasilworld commented Oct 14, 2026 •

Copy link
Copy Markdown

What

resolveIssue asserted status->IN_PROGRESS on every call — the first resolve moved FUNDED->IN_PROGRESS, so the second hit IN_PROGRESS->IN_PROGRESS (invalid) and threw. A milestone could only ever pay ONE issue.

Fix

Only transition when not already IN_PROGRESS.

Resolves #578

Payment: Base USDC 0xD40Df5c27cEa7dd78A3c345401995c319589334e

@vercel

vercel Bot commented Oct 14, 2026

Copy link
Copy Markdown

@yggdrasilworld is attempting to deploy a commit to the chonilius' projects Team on Vercel.

A member of the Team first needs to authorize it.

@yggdrasilworld

Copy link
Copy Markdown
Author

Scope audit addendum: implemented the AC's actual contract — explicit status check (FUNDED | IN_PROGRESS) throwing 'not accepting distributions', assertTransition only when the status really changes. Added the demanded two-resolutions-in-a-row test. Repaired upstream drift blocking the suite (escrow.service merge-tangle, sponsor-binding caller, releasePartial 5-arg). jest 20/20.

…ft (MergeFi#578)

resolveIssue's bare assertTransition made IN_PROGRESS -> IN_PROGRESS
fail, so a milestone could only ever pay its first issue. The status
check (FUNDED | IN_PROGRESS) gives callers a clean 400 and the state
machine only runs when the status actually changes. Adds the demanded
two-resolutions-in-a-row test; updates the controller spec for the
server-side user derivation + IdempotencyInterceptor DI upstream now
requires.
@yggdrasilworld
yggdrasilworld force-pushed the fix/milestone-multi-issue-578 branch from f7150f8 to 6106dc2 Compare October 16, 2026 16:46

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A milestone can only ever pay out one issue — resolveIssue asserts IN_PROGRESS → IN_PROGRESS, which the state machine forbids

1 participant